package com.ibeeking.gmc.global.g.rest.service;


import com.ibeeking.found.common.entity.DatasourceConfigDTO;
import com.ibeeking.gmc.global.service.common.bo.DatasourceConfigBO;
import com.ibeeking.gmc.global.service.common.param.DatasourceConfigParam;
import com.ibeeking.gmc.global.service.common.param.DatasourceConfigTestParam;
import com.ibeeking.gmc.global.service.common.query.DatasourceConfigPageQuery;
import com.ibeeking.gmc.global.service.common.query.DatasourceConfigQuery;
import com.ibeeking.gmc.global.service.common.vo.DatasourceConfigPageVO;
import com.ibeeking.gmc.global.service.common.vo.DatasourceConfigVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;


/**
 * IDatabaseTemplateService
 *
 * @Author ibeeking
 * @Date 2021-03-02 09:07
 */
public interface IDatasourceConfigService {

    /**
     * 分页查询
     *
     * @param query
     * @return
     */
    Page<DatasourceConfigPageVO> pageList(DatasourceConfigPageQuery query);

    /**
     * 新增
     *
     * @param param
     * @return
     */
    Boolean add(DatasourceConfigParam param);

    /**
     * 修改
     *
     * @param param
     * @return
     */
    Boolean modify(DatasourceConfigParam param);

    /**
     * 通过id查询
     *
     * @param id
     * @return
     */
    DatasourceConfigVO view(Long id);

    /**
     * 通过id查询
     *
     * @param id
     * @return
     */
    DatasourceConfigBO queryById(Long id);
    /**
     * 通过id查询
     *
     * @param id
     * @return
     */
    DatasourceConfigDTO viewById(Long id);

    /**
     * 通过租户Id查询
     *
     * @param tenantId
     * @return
     */
    DatasourceConfigDTO queryTenantDatasource(Integer tenantId);

    /**
     * 修改状态
     *
     * @param id
     * @param status
     * @return
     */
    Boolean changeStatus(Long id, Integer status);

    /**
     * 通过id删除
     *
     * @param id
     * @return
     */
    Boolean del(Long id);

    /**
     * 有效列表
     *
     * @param query
     * @return
     */
    List<DatasourceConfigVO> list(DatasourceConfigQuery query);

    /**
     * 通过id列表查询
     *
     * @param ids
     * @return
     */
    List<DatasourceConfigBO> selectNameByIds(List<Long> ids);

    /**
     * 数据库连接测试
     *
     * @param id
     * @param param
     * @return
     */
    Boolean connectionTest(Long id, DatasourceConfigTestParam param);

    /**
     * 获取模板数据库数据源
     * @return
     */
    DatasourceConfigBO queryDatabseTemplateDatasource();
}
